package com.eduagent.xwqeduagent.api.GeneralImageEditing.model;

import cn.hutool.core.annotation.Alias;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.io.Serializable;

/**
 * 通用图像编辑任务请求类
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CreateImageSynthesisTaskRequest implements Serializable {

    /**
     * 模型名称，例如 "wanx2.1-imageedit"
     */
    private String model = "wanx2.1-imageedit";

    /**
     * 输入参数
     */
    private Input input;

    /**
     * 图像处理参数
     */
    private Parameters parameters;

    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class Input implements Serializable {
        /**
         * 功能类型，必选
         * stylization_all：全局风格化
         * stylization_local：局部风格化
         * description_edit：指令编辑
         * description_edit_with_mask：局部重绘
         * remove_watermark：去文字水印
         * expand：扩图
         * super_resolution：图像超分
         * colorization：图像上色
         * doodle：线稿生图
         * control_cartoon_feature：参考卡通形象生图
         */
        @JsonProperty("function")
        private String function;

        /**
         * 提示词，必选
         */
        @JsonProperty("prompt")
        private String prompt;

        /**
         * 输入图像URL地址，必选
         */
        @Alias("base_image_url")
        @JsonProperty("base_image_url")
        private String baseImageUrl;

        /**
         * 涂抹区域图像URL地址
         * 仅当function为description_edit_with_mask时必填
         */
        @Alias("mask_image_url")
        @JsonProperty("mask_image_url")
        private String maskImageUrl;
    }

    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class Parameters implements Serializable {
        /**
         * 生成图片的数量，取值范围1~4，默认为1
         */
        private Integer n = 1;

        /**
         * 随机数种子，控制生成内容的随机性
         * 取值范围是[0, 2147483647]
         */
        private Integer seed;

        /**
         * 是否添加水印，水印位于图片右下角，文案为"AI生成"
         * false：默认值，不添加水印
         * true：添加水印
         */
        private Boolean watermark = false;
    }
} 